package com.anyou.common.exception.assertion;

import com.anyou.common.exception.ServiceException;
import org.apache.commons.lang3.StringUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public class AnyouAssert {

    /**
     * 断言字符串
     * @param str
     * @param msg
     */
    public static void notBlank(String str,String msg) {
        if(StringUtils.isBlank(str)){
            throw new ServiceException(msg);
        }
    }

    /**
     * 断言对象
     * @param obj
     * @param msg
     */
    public static void notNull(Object obj,String msg) {
        if(obj instanceof List){
            List<Object> list = (List)obj;
            if(null == list || list.isEmpty()){
                throw new ServiceException(msg);
            }
        }else{
            if(null == obj){
                throw new ServiceException(msg);
            }
        }
    }

    /**
     * 断言对象
     * @param obj
     * @param msg
     */
    public static void notFound(Object obj,String msg) {
        if(null == obj){
            throw new ServiceException(msg);
        }
    }

    /**
     * 断言数组
     * @param array
     * @param msg
     */
    public static void notBlankArray(Object[] array,String msg) {
        if (null == array || array.length == 0) {
            throw new ServiceException(msg);
        }
    }


    /**
     * 断言集合
     * @param collection
     * @param msg
     */
    public static void notEmptyCollection(Collection<?> collection,String msg) {
       if(null == collection || collection.isEmpty()){
           throw new ServiceException(msg);
       }
    }

    /**
     * 断言集合
     * @param map
     * @param msg
     */
    public static void notEmptyMap(Map<?, ?> map,String msg) {
        if (null == map || map.isEmpty()) {
            throw new ServiceException(msg);
        }
    }


    /**
     * 断言布尔值
     * @param result
     * @param msg
     */
    public static void isTrue(boolean result,String msg) {
        if (!result) {
            throw new ServiceException(msg);
        }
    }
}
